#!/bin/bash

# 快速性能测试脚本 - Vert.cj vs SeedHttp

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'

echo -e "${CYAN}🚀 快速性能测试 - Vert.cj vs SeedHttp${NC}"
echo -e "${CYAN}========================================${NC}"

# 检查wrk
if ! command -v wrk &> /dev/null; then
    echo -e "${RED}❌ 需要安装wrk: brew install wrk${NC}"
    exit 1
fi

# 编译项目
echo -e "${YELLOW}🏗️  编译项目...${NC}"
cjpm build

# 测试函数
test_server() {
    local port=$1
    local name=$2
    local example_name=$3

    echo -e "${BLUE}🚀 测试${name} (端口${port})${NC}"

    # 启动服务器
    cjpm run --name ${example_name} &
    local pid=$!
    
    # 等待启动
    sleep 3
    
    # 检查服务器是否启动
    if ! curl -s "http://localhost:${port}/api/status" > /dev/null; then
        echo -e "${RED}❌ ${name}服务器启动失败${NC}"
        kill ${pid} 2>/dev/null || true
        return 1
    fi
    
    echo -e "${GREEN}✅ ${name}服务器已启动${NC}"
    
    # 预热
    curl -s "http://localhost:${port}/api/status" > /dev/null
    curl -s "http://localhost:${port}/api/benchmark" > /dev/null
    
    # 运行测试
    echo -e "${PURPLE}📊 运行性能测试...${NC}"
    wrk -t4 -c100 -d10s --latency "http://localhost:${port}/api/status"
    
    # 停止服务器
    kill ${pid} 2>/dev/null || true
    sleep 2
    
    echo ""
}

# 测试Vert.cj
test_server 8080 "Vert.cj" "vert.examples.final_demo"

# 测试SeedHttp风格
test_server 8081 "SeedHttp-Style" "vert.examples.seedhttp_benchmark"

echo -e "${GREEN}✅ 快速测试完成！${NC}"
echo -e "${CYAN}💡 运行完整测试: ./benchmark_comparison.sh${NC}"
